<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }
  </style>
</head>

<body>
  <div id="app">
    <!--
      使字符串翻转 
        1.先将字符串切割成一个数组。
        2.将数组翻转。
        3.再将数组转为字符串
    -->
    <div>{{msg.split("").reverse().join("")}}</div>
    <!-- 
      计算属性目的：使得模板更加的简单，有可读性
     -->
    <span>{{reserveMsg1}}</span>

    <!-- 使用get和set来设置计算属性 -->
    <span>{{fullName}}</span>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const vm = new Vue({
      "el": "#app",
      "data": {
        "msg": "lorem",
        "msg1": "哈哈哦啊好",
        "firstName": "陈",
        "lastName": "臻"
      },
      "methods": {},
      "directives": {
        "focus": {
          inserted() {

          }
        },
        "color": {
          bind() {

          }
        }
      },
      /* 
        重点: methods与computed的重要区别
          computer计算属性的方法是基于它们的依赖进行缓存的(重复复杂的计算使用它)
          methods方法不存在缓存
      */
      "computed": { //计算属性的方法
        reserveMsg1() {
          return this.msg1.split("").reverse().join("");
        },

        fullName: {
          // set方法一般都不会用到
          set(newValue) {

          },
          get() {
            return this.firstName + this.lastName;
          }
        }
      }
    });
  </script>
</body>

</html>